HAOJX

cue实战之快速构建k8s的nginx-ingress模板

字数统计: 336阅读时长: 1 min
2022/06/27 Share
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

input: {
name: string & "myngx"
namespace?: string | *"default"
replicas: int | *1
port: int | *80
}

output: {
deployment:{
apiVersion: "apps/v1"
kind: "Deployment"
metadata: {
name: input.name
if input.namespace != _|_ {
namespace: input.namespace
}

}
"spec": {
"replicas": input.replicas
"selector": {
"matchLabels": {
"app": input.name
}
}
"template": {
"metadata": {
"labels": {
"app": input.name
}
}
"spec":
"containers": [
{
"name": "nginx"
"image": "nginx:1.18-alpine"
"ports": [
{
containerPort: input.port
}
]
}
]
}
}
}
}

可以写的bat脚本来在电脑的开发环境中生成yaml

1
2
del nginx.yaml
cue export fast/nginx.cue -e output -o nginx.yaml

对于可选项的

对应上面的可选项 当遇到可选项的时候 也就是可填可不填的时候 就在上面做个判断 比如那个namespace 如果不写 就是默认的, 那么在输出的时候 就加个if 判断来搞定 , 比如上面的例子 判断可选项的namespace的时候 就加个

1
2
3
if input.namespace != _|_ {
namespace: input.namespace
}

其中的那个 _*|*_ 就是nil的意思

比如上面那个 也可以加个 是否追加server 比如修改成这样

1
2
3
4
5
6
7
8
9
10
11
input: {
....
serviceEnable: bool | *true
.....
}

....

if input.serviceEnable{
service: {....}
}

环境变量的引用

kv格式的变量的引用

下面举个例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
input: {
...
env?: [string]:string
}

input: #input & {
....
env: { "age":"19","myname":"test"}

}

output: {
...
if input.env!=_|_{
env: [
for k,v in input.env{
{name:k,value:v}
}
]
}
}
CATALOG
  1. 1. 对于可选项的
  • 环境变量的引用
    1. 1. kv格式的变量的引用